نادیده گرفتن فایلها
اغلب، شما با دستهای از فایلها روبهرو میشوید که نمیخواهید گیت به طور خودکار آنها را اضافه یا حتی به عنوان فایلهای ردیابی نشده نشان دهد. این فایلها معمولاً فایلهای تولید شده به صورت خودکار هستند، مانند فایلهای لاگ یا فایلهای تولید شده توسط سیستم ساخت شما. در این موارد، میتوانید فایلی به نام .gitignore ایجاد کنید که الگوهایی برای نادیده گرفتن آنها فهرست میکند.
به عنوان مثال، یک فایل .gitignore به صورت زیر است:
$ cat .gitignore
*.[oa]
*~
خط اول به گیت میگوید که هر فایلی که با a. یا o. پایان مییابد - فایلهای شی و ارشیو که ممکن است نتیجه ساخت کد شما باشند - نادیده گرفته شود. خط دوم به گیت میگوید که تام فایلهایی که نامشان با (~) پایان مییابد، نادیده گرفته شوند؛ این علامت در بسیاری از ویرایشگرهای متن مانند emacs برای علامتگذاری فایلهای موقت استفاده میشود.
شما همچنین میتوانید در دایرکتوری مانند log, tmp یا pid را اضافه کنید؛ مستندات تولید شده به طور خودکار؛و غیره. به همین ترتیب تنظیم یک فایل .gitignore برای مخزن جدیدتان قبل از شروع کار عموماً ایده خوبی است تا به طور تصادفی فایلهایی را که واقعا نمیخواهید در مخزن گیت شما وجود داشته باشند، کامیت نکنید.
قوانین الگوها در فایل .gitignore
قوانین مربوط به الگوهایی که میتوانید در فایل gitignore. قرار دهید به شرح زیر است:
خطوط خالی یا خطوطی که با # شروع میشوند، نادیده گرفته میشوند.
الگوهای glob استاندارد کار میکنند و به صورت بازگشتنی در سراسر دایرکتوری کاری اعمال میشوند.
میتوانید الگوها را با یک اسلش(/) شروع کنید تا از بازگشت جلوگیری کنید.
میتونید الگوها را با یک اسلش(/) پایان دهید تا یک دایرکتوری تشخیص داده شود.
میتوانید با شروع الگو با علامت تعجب (!) آن را نفی کنید.
الگوهای glob شبیه به عبارات منظم ساده هستند و که شلها از آنها استفاده میکنند. به عنوان مثال:
یک ستاره(*) صفر یا بیشتر کاراکتر را تطبیق میدهد.
ا[abc] هر کاراکتری را که داخل براکتها است تطبیق میدهد. (در این مورد a,b یا c)
براکتهای حاوی کاراکترها که با خط تیره جدا شدهاند ([0-9])هر کاراکتری بین آنها است تطبیق میدهد(در این مورد از ۰ تا ۹).
همچنین میتوانید از دو ستاره برای تطبیق دایرکتوریهای تو در تو استفاده کنید؛ a//z دایرکتوریهای a/z,a/b/z,a/b/c/z و غیره را تطبیق میدهد.
مثالهای دیگر از gitignore.
# ignore all .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in any directory named build
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory and any of its subdirectories
doc//*.pdf
گیت هاب فهرست نسبتاً جامع و خوب از مثالهای gitignore. برای دهها پروژه و زبان را در ادرس https://github.com/github/gitignore نگهداری میکند که میتوانید برای پروژهتان به عنوان نقطه شروع از آن استفاده کنید.
در حالت ساده، یک مخزن ممکن است یک فایل gitignore. در دایرکتوری ریشهاش داشته باشد که به صورت بازگشتی به کل مخزن اعمال میشود. با این حال، همچنین ممکن است فایلهای gitignore. اضافی در دایرکتوریهای زیرمجموعه وجود داشته باشد. قوانین در این فایلهای gitignore. تو در تو تنها به فایلهای زیر دایرکتوری که در آن قرار دارند، اعمال میشوند. به عنوان مثال، مخزن منبع هسته لینوکس ۲۰۶ فایل gitignore. دارد.
جزیئات بیشتر درباره فایلهای gitignore. در محدوده این کتاب نیست؛ برای اطلاعات بیشتر به man gitignore. مراجعه کنید.